package com.xsdl.singleton;

import java.util.concurrent.atomic.AtomicLong;

/*
 * 懒汉式单例模式,在真正需要用到的时候创建
 * 优点是延迟加载,缺点时 getInstance 方法由于 synchronized 变成串行的了,如果频繁调用影响性能
 * 不推荐使用,原因是如果因为担心资源创建消耗多而延迟加载,那么影响真正请求时的速度,且无法早起暴露资源占用情况
 */
public class LIDGenerator {

    private final AtomicLong id = new AtomicLong(1L);

    private static LIDGenerator instance;

    public synchronized static LIDGenerator getInstance() {
        if (instance == null) {
            instance = new LIDGenerator();
        }
        return instance;
    }

    public Long getNextId() {
        return id.getAndIncrement();
    }

}
